package org.shj.springcloud.zuul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.netflix.zuul.filters.discovery.PatternServiceRouteMapper;
import org.springframework.context.annotation.Bean;

/**
 * Zuul 用于构建微服务网关。使用微服务网关的优点：
 * 1. 易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析。
 * 2. 易于认证。可以微服务网关上进行认证，然后再请求转发到后端的微服务，无须在每个微服务中进行认证。
 * 3. 减少了客户端与各个微服务之间的交互次数。
 * 
 * @author huangjian
 *
 */
@SpringBootApplication
@EnableZuulProxy
public class ZuulApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZuulApplication.class, args);
	}
	
	/**
	 * 设置路由匹配规则。 此例实现了诸如 microservice-provider-user-v1 这个微服务，
	 * 映射到 /v1/microservice-provider-user/** 这个路径
	 */
	/*@Bean
	public PatternServiceRouteMapper serviceRouteMapper(){
		//调用构造函数 PatternServiceRouteMapper(String servicePattern, String routePattern)
		// servicePather指定微服务正则表达式， routePattern 指定路由正则表达式
		return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)", "${version}/${name}");
	}*/
}
